Crate jotdown

source ·
Expand description

A pull parser for Djot.

The main entry is through Parser which implements an Iterator of Events. The events can then be used to traverse the document structure in order to e.g. construct an AST or directly generate to some output format. This crate provides an html module that can be used to render the events to HTML.

Feature flags

  • html (default): build the html module and a binary that converts djot to HTML.

Examples

Generate HTML from Djot input:

use jotdown::Render;
let djot_input = "hello *world*!";
let events = jotdown::Parser::new(djot_input);
let mut html = String::new();
jotdown::html::Renderer::default().push(events, &mut html);
assert_eq!(html, "<p>hello <strong>world</strong>!</p>\n");

Apply some filter to a specific type of element:

let events =
    jotdown::Parser::new("a [link](https://example.com)").map(|e| match e {
        Event::Start(Link(dst, ty), attrs) => {
            Event::Start(Link(dst.replace(".com", ".net").into(), ty), attrs)
        }
        e => e,
    });
let mut html = String::new();
jotdown::html::Renderer::default().push(events, &mut html);
assert_eq!(html, "<p>a <a href=\"https://example.net\">link</a></p>\n");

Modules

  • An HTML renderer that takes an iterator of Events and emits HTML.

Structs

Enums

Traits

  • A trait for rendering Events to an output format.